WOLF core
WOLF: A Modular Estimation Framework for Robotics
XXXXXXXXXXXXXXXXXXXXXXXXvoid(0)" frameborder="0" name="MSearchResults" id="MSearchResults">
track_matrix.h
Go to the documentation of this file.
1// WOLF - Copyright (C) 2020-2026
2// Institut de Robòtica i Informàtica Industrial, CSIC-UPC.
3// Authors: Joan Solà Ortega (jsola@iri.upc.edu) and
4// Joan Vallvé Navarro (jvallve@iri.upc.edu)
5// All rights reserved.
6//
7// This file is part of WOLF: http://www.iri.upc.edu/wolf
8// WOLF is free software: you can redistribute it and/or modify
9// it under the terms of the GNU General Public License version 3
10// as published by the Free Software Foundation.
11//
12// This program is distributed in the hope that it will be useful,
13// but WITHOUT ANY WARRANTY; without even the implied warranty of
14// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15// GNU General Public License for more details.
16//
17// You should have received a copy of the GNU General Public License
18// along with this program. If not, see <http://www.gnu.org/licenses/>.
19#pragma once
20
23
24#include <map>
25#include <vector>
26#include <list>
27#include <utility>
28
29namespace wolf
30{
31using std::list;
32using std::map;
33using std::pair;
34using std::shared_ptr;
35using std::vector;
36
37typedef map<TimeStamp, FeatureBasePtr> Track;
38typedef map<TimeStamp, FeatureBaseConstPtr> TrackConst;
39typedef map<SizeStd, FeatureBasePtr> Snapshot;
40typedef map<SizeStd, FeatureBaseConstPtr> SnapshotConst;
41typedef map<SizeStd, pair<FeatureBasePtr, FeatureBasePtr> > TrackMatches; // matched feature pairs indexed by track_id
42typedef map<SizeStd, pair<FeatureBaseConstPtr, FeatureBaseConstPtr> >
43 TrackMatchesConst; // matched feature pairs indexed by track_id
44
91{
92 public:
94 virtual ~TrackMatrix();
95
96 void newTrack(FeatureBasePtr _ftr);
97 void add(const SizeStd& _track_id, const FeatureBasePtr& _ftr);
98 void add(const FeatureBasePtr& _ftr_existing, const FeatureBasePtr& _ftr_new);
99 void remove(FeatureBasePtr _ftr);
100 void remove(const SizeStd& _track_id);
101 void remove(CaptureBasePtr _cap);
102
103 SizeStd numTracks() const;
104 SizeStd trackSize(const SizeStd& _track_id) const;
105 TrackConst track(const SizeStd& _track_id) const;
106 Track track(const SizeStd& _track_id);
107 SnapshotConst snapshot(CaptureBaseConstPtr _capture) const;
108 Snapshot snapshot(CaptureBasePtr _capture);
109 vector<FeatureBaseConstPtr> trackAsVector(const SizeStd& _track_id) const;
110 vector<FeatureBasePtr> trackAsVector(const SizeStd& _track_id);
111 FeatureBaseConstPtrList snapshotAsList(CaptureBaseConstPtr _cap) const;
112 FeatureBasePtrList snapshotAsList(CaptureBasePtr _cap);
113 TrackMatchesConst matches(CaptureBaseConstPtr _cap_1, CaptureBaseConstPtr _cap_2) const;
114 TrackMatches matches(CaptureBasePtr _cap_1, CaptureBasePtr _cap_2);
115
116 FeatureBaseConstPtr firstFeature(const SizeStd& _track_id) const;
117 FeatureBasePtr firstFeature(const SizeStd& _track_id);
118 FeatureBaseConstPtr lastFeature(const SizeStd& _track_id) const;
119 FeatureBasePtr lastFeature(const SizeStd& _track_id);
120 FeatureBaseConstPtr feature(const SizeStd& _track_id, CaptureBaseConstPtr _cap) const;
121 FeatureBasePtr feature(const SizeStd& _track_id, CaptureBasePtr _cap);
122 CaptureBaseConstPtr firstCapture(const SizeStd& _track_id) const;
123 CaptureBasePtr firstCapture(const SizeStd& _track_id);
124 CaptureBaseConstPtr lastCapture(const SizeStd& _track_id) const;
125 CaptureBasePtr lastCapture(const SizeStd& _track_id);
126
127 list<SizeStd> trackIds(CaptureBaseConstPtr _capture = nullptr) const;
128
129 // tracks across captures that belong to keyframe
130 TrackConst trackAtKeyframes(const SizeStd& _track_id) const;
131 Track trackAtKeyframes(const SizeStd& _track_id);
132
133 // Remove snapshots of captures that are being removed from the problem (e.g. when a keyframe is removed)
134 void cleanSnapshots();
135
136 private:
137 static SizeStd track_id_count_;
138
139 // tracks across all Captures
140 map<SizeStd, Track> tracks_; // map indexed by track_Id of ( maps indexed by TimeStamp of ( features ) )
141
142 // Across track: maps of Feature pointers indexed by track_Id.
143 map<CaptureBasePtr, Snapshot>
144 snapshots_; // map indexed by capture_ptr of ( maps indexed by track_Id of ( features ) )
145};
146
147} /* namespace wolf */
Matrix of tracked features, by track and by snapshot (Captures or time stamps) This class implements ...
Definition: track_matrix.h:91
TrackConst trackAtKeyframes(const SizeStd &_track_id) const
Definition: track_matrix.cpp:329
SnapshotConst snapshot(CaptureBaseConstPtr _capture) const
Definition: track_matrix.cpp:52
list< SizeStd > trackIds(CaptureBaseConstPtr _capture=nullptr) const
Definition: track_matrix.cpp:369
virtual ~TrackMatrix()
Definition: track_matrix.cpp:30
TrackMatchesConst matches(CaptureBaseConstPtr _cap_1, CaptureBaseConstPtr _cap_2) const
Definition: track_matrix.cpp:246
CaptureBaseConstPtr firstCapture(const SizeStd &_track_id) const
Definition: track_matrix.cpp:309
FeatureBaseConstPtrList snapshotAsList(CaptureBaseConstPtr _cap) const
Definition: track_matrix.cpp:227
void remove(FeatureBasePtr _ftr)
Definition: track_matrix.cpp:132
void add(const SizeStd &_track_id, const FeatureBasePtr &_ftr)
Definition: track_matrix.cpp:81
CaptureBaseConstPtr lastCapture(const SizeStd &_track_id) const
Definition: track_matrix.cpp:319
FeatureBaseConstPtr lastFeature(const SizeStd &_track_id) const
Definition: track_matrix.cpp:189
vector< FeatureBaseConstPtr > trackAsVector(const SizeStd &_track_id) const
Definition: track_matrix.cpp:205
TrackConst track(const SizeStd &_track_id) const
Definition: track_matrix.cpp:35
SizeStd numTracks() const
Definition: track_matrix.cpp:163
FeatureBaseConstPtr feature(const SizeStd &_track_id, CaptureBaseConstPtr _cap) const
Definition: track_matrix.cpp:293
void cleanSnapshots()
Definition: track_matrix.cpp:153
void newTrack(FeatureBasePtr _ftr)
Definition: track_matrix.cpp:75
TrackMatrix()
Definition: track_matrix.cpp:25
FeatureBaseConstPtr firstFeature(const SizeStd &_track_id) const
Definition: track_matrix.cpp:173
SizeStd trackSize(const SizeStd &_track_id) const
Definition: track_matrix.cpp:168
Definition: capture_base.h:23
map< SizeStd, FeatureBasePtr > Snapshot
Definition: track_matrix.h:39
map< SizeStd, FeatureBaseConstPtr > SnapshotConst
Definition: track_matrix.h:40
std::size_t SizeStd
Other containers size type for the Wolf project.
Definition: wolf.h:66
map< SizeStd, pair< FeatureBaseConstPtr, FeatureBaseConstPtr > > TrackMatchesConst
Definition: track_matrix.h:43
map< SizeStd, pair< FeatureBasePtr, FeatureBasePtr > > TrackMatches
Definition: track_matrix.h:41
map< TimeStamp, FeatureBaseConstPtr > TrackConst
Definition: track_matrix.h:38
map< TimeStamp, FeatureBasePtr > Track
Definition: track_matrix.h:37